/*-------------------------------------------------------------------------
 * link-canary.c
 *	  检测src/common函数来自前端还是后端。
 *
 * Copyright (c) 2018-2022, PostgreSQL Global Development Group
 *
 * IDENTIFICATION
 *	  src/common/link-canary.c
 *
 *-------------------------------------------------------------------------
 */
#include "c.h"

#include "common/link-canary.h"

/*
 * 这个函数只是报告这个文件是为前端还是后端环境编译的。我们需要这样做，因为在某些系统中，主要是基于ELF的平台，加载到后端的共享库（例如libpq）可以优先调用一个名为XYZ的后端函数，而不是共享库自己的函数XYZ。如果这两个函数的行为不完全相同，那就不好了。对于src/common和src/port中的许多函数，会出现这种情况，因为libpq和后端中都有相同的函数名，但它们的行为并不完全相同。为了验证已经采取了适当的措施以防止错误的符号解析，libpq应该测试这个函数是否返回true。
*/
bool pg_link_canary_is_frontend(void)
{
#ifdef FRONTEND
	return true;
#else
	return false;
#endif
}
